$(function(){
    $('.btn-close').click(function (e) {
        e.preventDefault();
        $(this).parent().parent().parent().fadeOut();
    });
    $('.btn-minimize').click(function (e) {
        e.preventDefault();
        var $target = $(this).parent().parent().next('.box-content');
        if ($target.is(':visible')) $('i', $(this)).removeClass('glyphicon-chevron-up').addClass('glyphicon-chevron-down');
        else                       $('i', $(this)).removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up');
        $target.slideToggle();
    });
    $('.btn-setting').click(function (e) {
        e.preventDefault();
        $('#myModal').modal('show');
    });
});

//additional functions for data table
$.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
    return {
        "iStart": oSettings._iDisplayStart,
        "iEnd": oSettings.fnDisplayEnd(),
        "iLength": oSettings._iDisplayLength,
        "iTotal": oSettings.fnRecordsTotal(),
        "iFilteredTotal": oSettings.fnRecordsDisplay(),
        "iPage": Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
        "iTotalPages": Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
    };
}
$.extend($.fn.dataTableExt.oPagination, {
    "bootstrap": {
        "fnInit": function (oSettings, nPaging, fnDraw) {
            var oLang = oSettings.oLanguage.oPaginate;
            var fnClickHandler = function (e) {
                e.preventDefault();
                if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
                    fnDraw(oSettings);
                }
            };

            $(nPaging).addClass('pagination').append(
                '<ul class="pagination">' +
                    '<li class="prev disabled"><a href="#">&larr; ' + oLang.sPrevious + '</a></li>' +
                    '<li class="next disabled"><a href="#">' + oLang.sNext + ' &rarr; </a></li>' +
                    '</ul>'
            );
            var els = $('a', nPaging);
            $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler);
            $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler);
        },

        "fnUpdate": function (oSettings, fnDraw) {
            var iListLength = 5;
            var oPaging = oSettings.oInstance.fnPagingInfo();
            var an = oSettings.aanFeatures.p;
            var i, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);

            if (oPaging.iTotalPages < iListLength) {
                iStart = 1;
                iEnd = oPaging.iTotalPages;
            }
            else if (oPaging.iPage <= iHalf) {
                iStart = 1;
                iEnd = iListLength;
            } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
                iStart = oPaging.iTotalPages - iListLength + 1;
                iEnd = oPaging.iTotalPages;
            } else {
                iStart = oPaging.iPage - iHalf + 1;
                iEnd = iStart + iListLength - 1;
            }

            for (i = 0, iLen = an.length; i < iLen; i++) {
                // remove the middle elements
                $('li:gt(0)', an[i]).filter(':not(:last)').remove();

                // add the new list items and their event handlers
                for (j = iStart; j <= iEnd; j++) {
                    sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';
                    $('<li ' + sClass + '><a href="#">' + j + '</a></li>')
                        .insertBefore($('li:last', an[i])[0])
                        .bind('click', function (e) {
                            e.preventDefault();
                            oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength;
                            fnDraw(oSettings);
                        });
                }

                // add / remove disabled classes from the static elements
                if (oPaging.iPage === 0) {
                    $('li:first', an[i]).addClass('disabled');
                } else {
                    $('li:first', an[i]).removeClass('disabled');
                }

                if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
                    $('li:last', an[i]).addClass('disabled');
                } else {
                    $('li:last', an[i]).removeClass('disabled');
                }
            }
        }
    }
});

var dataTableDefaults = {
    "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'ip>>",
    "sPaginationType": "bootstrap",
    "bFilter" : true,
    "iDisplayStart":0,
    "iDisplayLength":5,
    "bServerSide": true,
//    "sAjaxSource": "/dc/get",
    "sAjaxDataProp": "data",
    "aLengthMenu": [5,10,25,50],
    "oLanguage": {
        "sLengthMenu": "每页显示 _MENU_ 条记录",
        "sZeroRecords": "对不起，查询不到任何相关数据",
        "sInfo": "显示 _START_ - _END_ ，共 _TOTAL_ 条记录。",
        "sInfoEmpty": "找不到相关数据",
        "sInfoFiltered": "（数据表中共为 _MAX_ 条记录）",
        "sProcessing": "正在加载中...",
        "sSearch": "搜索",
        "sUrl": "", //多语言配置文件，可将oLanguage的设置放在一个txt文件中，例：Javascript/datatable/dtCH.txt
        "oPaginate": {
            "sFirst": "第一页",
            "sPrevious": " 上一页 ",
            "sNext": " 下一页 ",
            "sLast": " 最后一页 "
        }
    }, //多语言配置
//    "aoColumns": [
//        { "mData": "metaName"},
//        { "mData": "desc" },
//        { "mData": "view.viewName" },
//        { "mData": "updateTime" },
//        { "mData": "checked","mRender" : function(mData,type,full) {
//            var checked = parseInt(mData);
//            var checkHtml = '<span class="' + sClass[checked] + '" >' + sDesc[checked] + '</span>';
//            return checkHtml;
//        }  },
//        { "mData": "id","mRender" :function(mData,type,full){
//            var html = [
//                '<div class="btn-group">',
//                '<a class="btn  btn-default dropdown-toggle" data-toggle="dropdown" href="#">菜单<span class="caret"></span></a>',
//                '<ul class="dropdown-menu">',
//                '<li><a href="#"><i class="glyphicon glyphicon-edit"></i> 修改</a></li>',
//                    '<li><a href="/dc/conf/'+mData+'/"><i class="glyphicon glyphicon-cog"></i> 配置</a></li>',
//                    '<li><a href="/dc/'+mData+'/?_method=DELETE"><i class="glyphicon glyphicon-trash"></i> 删除</a></li>',
//                    '<li><a href="/dc/'+mData+'/"><i class="glyphicon glyphicon-info-sign"></i> 详情</a></li>',
//                '</ul>',
//                '</div>' ];
//            return html.join('');
//        } }
//    ],
//            "fnCreatedRow": function (nRow, aData, iDataIndex) {
//                $("td:eq(0)",nRow).html(aData[0]);
//                $("td:eq(1)",nRow).html(aData[1]);
//                $("td:eq(2)",nRow).html(aData[2]);
//                $("td:eq(3)",nRow).html(aData[3]);
//                $("td:eq(4)",nRow).html(aData[4]);
//                $("td:eq(5)",nRow).html("bianji");
//            },
//            "fnServerParams": function ( aoData ) {
//                aoData.push(
//                        { "name": "key", "value": $("#search-keyword").val() },
//                        { "name": "responseType", "value": $("#search-responseType").val() }
//                );
//            },
    "fnServerData" : function(sSource, aDataSet, fnCallback) {
        $.ajax({
            "dataType" : 'json',
            "type" : "get",
            "url" : sSource,
            "data" : aDataSet,
            "success" : function(resp){
                var r = {};
                r.sEcho = resp.sEcho;
                r.iTotalRecords = resp.pagination.count;
                r.iTotalDisplayRecords = resp.pagination.count;
                r.data = resp.data;
                fnCallback(r);
            }
        });
    }
};
